package com.mou.aiagent.agent.model;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;

/**
 * 代理类
 * 实现思考和执行
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Slf4j
public abstract class ReActAgent extends BaseAgent{
// 定义一个抽象方法，用于思考 true表示继续执行，false表示停止执行
    public abstract  boolean think();
// 定义一个抽象方法，用于执行动作 执行think返回true时执行
    public abstract  String act();
    @Override
    public String step() {
        try {
            // 1 先思考
            boolean think = think();
            if (!think) {
                return "思考完成，不需要思考";
            }
            // 2 在行动
            return act();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

